package com.gouying.web.listener;

import lombok.extern.slf4j.Slf4j;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;

@Slf4j
public class TimerRunner implements Runnable{
    @Override
    public void run() {
        // 打印次数
        int count = 1;
        SimpleDateFormat dateFormat= new SimpleDateFormat("hh:mm:ss");
        for (TimerEnum item: TimerEnum.values()) {
            if (count == item.getCount()) {
                if (count != 9) {
                    log.info("时间: " + dateFormat.format(new Date()) + "第 " + count + " 次打印，还剩余 " + (9 - count) + " 次完成打印");
                    count++;
                } else {
                    log.info("最后一次打印");
                    log.info("已完成所有打印任务！");
                }
            }
            try {
                // TimeUnit来sleep，可读性更好
                TimeUnit.SECONDS.sleep(item.getTime());
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
 
    private enum TimerEnum {
        // 第5秒打印
        FIRST(1, 5 ),
        // 第10秒打印
        SECOND(2, 10),
        // 第15秒打印
        THIRD(3, 15),
        // 第20秒打印
        FOURTH(4, 20),
        // 第25秒打印
        FIFTH(5, 25),
        // 第30秒打印
        SIXTH(6, 30),
        // 第40秒打印
        SEVENTH(7, 40),
        // 第50秒打印
        EIGHTH(8, 50),
        // 第60秒打印
        NINTH(9, 60);
 
        private Integer count;
 
        private Integer time;
 
        TimerEnum(Integer count, Integer time) {
            this.count = count;
            this.time = time;
        }
 
        public Integer getCount() {
            return count;
        }
 
        public Integer getTime() {
            return time;
        }
    }
}